#ifndef COW_H
#define COW_H

#include "ai/agent.h"
#include "entity/entity.h"
#include "geometry/sphere.h"

class QVector3D;

class Object;
class Flock;

class Cow : public Agent, public Entity
{
public:
    Cow(Flock& rkFlock);
    ~Cow();

    static Object& object();

    Sphere body() const;
    quint32 id() const;

    bool isVisible();

    void setHeading(qreal angle);
    void setPosition(const QVector3D& rkPosition);
    void setPosition(qreal x, qreal y, qreal z);
    void setVisible(bool bIsVisible);
    void setID(quint32 uiID);

    void paint() const;

protected:
    Cow(const Cow&);
    Cow& operator = (const Cow&);

private:
    //------------------------------------------------
    //  Attributes.
    //------------------------------------------------
    // Visual.
    static Object* s_pkCowObject;

    bool m_bIsVisible;
    quint32 m_uiCowSoundID;
};

#endif // COW_H
